package BNS.plumbing;

import java.rmi.Remote;
import java.rmi.RemoteException;

/** This interface describes how the Client can interact with the host server 
	once it has been registered. */
public interface ClientLiaisonInterface extends Remote {
	
	/** The passUpdate method carries out the mechanics of starting and stopping games,
		and is involved in the routine updates of game state.
		It is generic... it has no knowledge of the particular game being played. */
	public java.io.Serializable passUpdate() throws RemoteException;
	
	/** Calling this method indicates to the server that the Client is
		quitting all interaction. One situation in which this will be called is when
		the browser leaves the applet page. * /
	public boolean resign() throws RemoteException;
	
	/** used to change state of a game.
		@param changeObject an Object of design specialized to the game type.
		@return indicates success at making the change.
		It returns true iff the game is not over, the game is not paused, 
		and the game had no errors while trying to carry out the
		changes implies by changeObject. */
	public boolean alter(java.io.Serializable changeObject) throws RemoteException;

	}
